<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <button>1</button>
    <button>2</button>
    <button>3</button>

    <script>

        // 一个函数可以访问另一个函数的作用域变量

        // 



        // 一般情况下   一个函数是无法访问另一个函数的局部变量
        // f()

        // function f() {
        //     var a = 1;
        //     fn()
        // }

        // function fn() {
        //     console.log(a);
        // }


        // 形成了一个闭包
        // f();
        // function f() {
        //     var a = 1;
        //     fn();
        //     function fn() {
        //         console.log(a);
        //     }
        // }


        // fn变成了一个私有函数   外面无法访问



        // function f() {
        //     var a = 1;
        //     function fn() {
        //         console.log(a);
        //     }
        //     return fn
        // }


        // // f()();
        // var fo = f();
        // fo();





        // for (var i = 0; i < 10; i++) {
        //     setTimeout(() => {
        //         console.log(i)
        //     })
        // }


        // for (let i = 0; i < 10; i++) {
        //     setTimeout(() => {
        //         console.log(i)
        //     })
        // }



        for (var i = 0; i < 10; i++) {
            (function (j) {
                // j是一个形参 ---  形参本质上就是一个局部变量
                // var j = i ;
                setTimeout(function () {
                    console.log(j)
                })
            })(i)
        }




        // i = 0;
        // (function (i) {
        //     // j是一个形参 ---  形参本质上就是一个局部变量
        //     // var j = i ;
        //     setTimeout(function () {
        //         console.log(i)
        //     })
        // })(0)

        // i = 1;
        // (function (i) {
        //     // j是一个形参 ---  形参本质上就是一个局部变量
        //     // var j = i ;
        //     setTimeout(function () {
        //         console.log(i)
        //     })
        // })(1)




        var oBtns = document.querySelectorAll('button');
        for (var i = 0; i < oBtns.length; i++) {
            // 匿名函数的自调用   ---  应用了闭包
            (function (i) {
                oBtns[i].onclick = function () {
                    console.log(i);
                }
            })(i)
        }


    </script>

</body>

</html>